package Management;

import java.util.ArrayList;
import java.util.List;

import Entities.ClienteEventual;
import Entities.Empleado;
import bean.dao.ClienteDAO;
import bean.dao.EmpleadoDAO;
import paquetes.negocioVO.EmpleadoVO;
import paquetes.negocioVO.SucursalVO;


public class ManagementEmpleado {

private static ManagementEmpleado instancia;
	
	public static ManagementEmpleado getInstancia(){
		if(instancia == null)
			instancia = new ManagementEmpleado();
		return instancia;
	}
	
	public EmpleadoVO empleadoEntitieAVO(Empleado empleado) {
		EmpleadoVO empleadoVO = new EmpleadoVO();
		empleadoVO.setNombre(empleado.getNombre());
		empleadoVO.setApellido(empleado.getApellido());
		//empleadoVO.setPosicion(empleado.getPosicion());
		empleadoVO.setActivo(empleado.isActivo());
		return empleadoVO;	
	}
	
	public Empleado VOAEntitie(EmpleadoVO empleado){
		Empleado emp = new Empleado();
		emp.setNombre(empleado.getNombre());
		emp.setApellido(empleado.getApellido());
		//emp.setPosicion(empleado.getPosicion());
		emp.setActivo(empleado.isActivo());
		return emp;
	}

	public void guardarEmpleado(String nombre, String apellido, int posicion,
			int activo, int suc) {
		

		EmpleadoDAO miEmpleadoDAO = new EmpleadoDAO();
		
		Empleado emp = new Empleado();
		emp.setNombre(nombre);
		emp.setApellido(apellido);
		emp.setPosicion(posicion);
		if (activo ==1){
		emp.setActivo(true);
		}else{
		emp.setActivo(false);			
		}
		miEmpleadoDAO.altaEmpleado(suc,emp);		
		
	}
	
	public void bajaEmpleado(int id) {
		EmpleadoDAO miEmpleadoDAO = new EmpleadoDAO();
		miEmpleadoDAO.bajaEmpleado(id);
	}

	public List<EmpleadoVO> obtenerEmpleados() {
		try {
			EmpleadoDAO miEmpleado = new EmpleadoDAO();
			List<Empleado> empleados = miEmpleado.obtenerEmpleados();
			List<EmpleadoVO> empleadosVO = new ArrayList<EmpleadoVO>();
			for (int i=0;i < empleados.size();i++)
			{
				EmpleadoVO emp = this.empleadoEntitieAVO(empleados.get(i));
				empleadosVO.add(emp);
			}
			return empleadosVO;
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public EmpleadoVO obtenerEmpleado(int idEmp) {
		try {
			EmpleadoDAO miEmpleado = new EmpleadoDAO();
			Empleado eh = miEmpleado.getEmpleado(idEmp);
			if (eh==null)
				return null;
			EmpleadoVO emp = this.empleadoEntitieAVO(eh);
			return emp;
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
		
	}
	

	public void editarEmpleado(int idSuc, EmpleadoVO empleado) {
		
		Empleado emp = new Empleado();
		EmpleadoDAO miEmpleadoDAO = new EmpleadoDAO();
		EmpleadoDAO.actualizarEmpleado(idSuc,this.VOAEntitie(empleado));
		
	}

}
